// 封装防抖接口方法

// 防抖方法
export const debounce = (func: Function, delay: number) => {
    // 定义定时器
    let timer: any = null;
    // 利用闭包原理，返回一个函数
    return function (...args: any) {
        // 判断定时器是否存在
        if (timer) {
            // 清除定时器
            clearTimeout(timer);
        }
        // 定时器重新辅助
        timer = null;
        // 辅助定时器
        timer = setTimeout(() => {
            // 执行函数
            func(args)
        }, delay);
    }
}


// 节流方法
export const throttle = (func: Function, delay: number) => {
    // 定义起始时间
    let startTime = +new Date()
    // 返回一个函数
    return function (...args: any) {
        // 定义当前时间
        let currentTime = +new Date()
        // 判断当前时间 减去开始时间 是否大于等于 定义的时间
        if (currentTime - startTime >= delay) {

            // 重新赋值 当前时间作为下次起始的时间
            startTime = currentTime
            // 执行函数
            return func(args)
        }
    }
}